package com.hd.service.sys;

import java.util.List;
import java.util.Map;
import java.util.Set;

import com.hd.entity.sys.Role;
import com.hd.util.result.PageInfo;

/**
*@author hzhh123
*@time 2018年1月15日上午10:30:16
 * <p>
 *     角色业务层接口
 * </p>
**/
public interface RoleService {
	/**
	 * 分页查询角色
	 * @param pageInfo
	 */
	void selectDataGrid(PageInfo pageInfo);

   // Object selectTree();

	/**
	 * 通过角色ID查询资源列表
	 * @param id 角色ID
	 * @return
	 */
    List<String> selectResourceIdListByRoleId(String id);
	/**
	 * 更新角色与资源关联表
	 * @param id 角色ID
	 * @param resourceIds 资源ID集合
	 */
    void updateRoleResource(String id, String resourceIds);

	/**
	 * 保存角色
	 * @param role
	 */
	void insert(Role role);

	/**
	 * 通过主键删除角色
	 * @param id
	 */
	void deleteById(String id);

	/**
	 * 通过ID查询
	 * @param id
	 * @return
	 */
	Role selectById(String id);

	/**
	 * 更新
	 * @param role
	 */
	void updateById(Role role);
	/**
	 * 通过用户ID查询关联资源
	 * shiro权限 url地址 role角色
	 * @param userId 用户ID
	 * @return
	 */
	Map<String, Set<String>> selectResourceMapByUserId(String userId);

	/**
	 * 通过角色名查询角色
	 * @param name
	 * @return
	 */
	Role findbyName(String name);

	/**
	 * 通过角色编码查询角色
	 * @param roleCode 角色编码
	 * @return
	 */
	Role findbyCode(String roleCode);

	/**
	 * 通过角色ID集合查询角色用户关联表中关联的用户ID集合
	 * @param roleIds 角色ID集合
	 * @return
	 */
	String getUserids(String roleIds);


	/**
	 * 同步角色到Activiti
	 * @throws Exception
	 */
	void synRoleToActiviti() throws Exception;
}
